{% extends '../type-definition.template.html' %}
{% block staticDeclarations %}
// Angular depends transitively on these libraries.
// If you don't have them installed you can run
// $ tsd query es6-promise rx rx-lite --action install --save
///<reference path="../es6-promise/es6-promise.d.ts"/>
///<reference path="../rx/rx.d.ts"/>

interface List<T> extends Array<T> {}
interface Map<K,V> {}
interface StringMap<K,V> extends Map<K,V> {}

declare module ng {
  type SetterFn = typeof Function;
  type int = number;
  interface Type extends Function {
    new (...args): any;
  }

  // See https://github.com/Microsoft/TypeScript/issues/1168
  class BaseException /* extends Error */ {
    message: string;
    stack: string;
    toString(): string;
  }
  interface InjectableReference {}
}
{% endblock %}

declare module "angular2/angular2" {
  export = ng;
}
